#include <bits/stdc++.h>
#include <unistd.h>
#include <signal.h>
#include <wait.h>
using namespace std;

static void Usage(const std::string & proc)
{
    std::cout<<"\nUsage:  "<<proc<<" Signumber  process\n";
}

int a ;
void sigcb(int signo)
{
    cout<<"获得一个"<<signo<<"号信号   "<<a<<endl;
    exit(1);
}


void handler(int signo)
{
    cout<<"获得一个"<<signo<<"号信号   "<<a<<endl;
    exit(1);
}

int main(int argc,char* argv[])
{
    signal(2,sigcb);
    // alarm(1);

    while(1)
    {
        sleep(1);
        std::cout << "I am a process\n";
    }

    // int cnt = 0;
    // while(true)
    // {
    //     a = cnt++;//这里可以改成直接打印cnt，与之对比来验证计算机里面的外设实际是很慢的说法
    // }


    // //野指针演示
    // signal(11,handler);
    // int *p = nullptr;
    // *p = 100;


    //除0错误演示
    // signal(8,handler);
    // //异常
    // int a = 10;
    // a/=0;//除0错误就是出现的是8号信号，
    // //我们只打开这段代码，发现在无限循环





//--测试kill系统调用
    // if(argc != 3)
    // {
    //     Usage(argv[0]);
    //     exit(0);
    // }
    // int signum = std::stoi(argv[1]);
    // int Processid = std::stoi(argv[2]);
    // kill(Processid,signum);














//------------------测试键盘输入的Ctrl +C ,Ctlr+ Z的信号测试
    // signal(2,handler);
    // signal(19,handler);
    // signal(20,handler);
    // signal(9,handler);//掉了函数想去屏蔽9号信号，但是是不能屏蔽的，所以依然能杀掉进程。9号是少数的不能被屏蔽的信号之一

    // signal(3,handler);
    // int pid =  getpid();
    // while(1)
    // {
    //     sleep(1);
    //     cout<<"Process Id:"<<pid<<endl;
    // }

    return 0;
}